[EMA C++]Can RefreshMsg&UpdateMsg only be decoded once?
hello:
I develop with EMA C++
I found I can only decode the RefreshMsg once .
First, I decode the RefreshMsg, to get Struct A;
Then, I decode the RefreshMsg, to get Struct B, but failed, all the FIDs become "blank data"
why?
Best Answer
-
Hi @luxiangyuan
In your capture, you are pointing to NULL = ptr, but I am guessing you mean the FieldList being blank?
I cannot see your full code, but I notice you are using FieldList iterator
while( fl.forth() )
to iterate through the FieldList.
As you may know the while() will loop until it reaches the end of the FieldList.
So, once you have iterated to the end of the FieldList, do you then reset the iterator, before you start the 2nd decode attempt?
fl.reset()
Please confirm.
0
Answers
-
thank you , It works
0 -
Hi @luxiangyuan
As you may be aware, the callback client event handlers such as onRefreshMsg and onUpdateMsg are executed on the API thread context.
In view of this, you should always try and minimise the time spent processing data in the API thread context when you receive a RefreshMsg or UpdateMsg. Otherwise, you risk creating a Slow Consumer scenario where the API is not able to read data quickly enough from the server, causing buffering of data on the ADS and possible disconnect if the buffer overflows.
Therefore, I would advise against decoding a FieldList twice. I would recommend decoding the FieldList once and extracting the fields into application owned containers. You can then process the application owned object in a separate thread - thereby freeing up the API thread to return and continue processing the next message from the server.
The above applies if you plan to consume a higher number of instruments which update frequently. If, however, you are only consuming a relatively low number, then the Slow Consumer scenario may not arise. I cannot define what constitutes high number / low number as this depends on many factors.
0
Categories
- All Categories
- 6 AHS
- 39 Alpha
- 162 App Studio
- 4 Block Chain
- 5 Bot Platform
- 17 Connected Risk APIs
- 47 Data Fusion
- 30 Data Model Discovery
- 608 Datastream
- 1.3K DSS
- 577 Eikon COM
- 4.9K Eikon Data APIs
- 7 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- Trading API
- 2.7K Elektron
- 1.3K EMA
- 236 ETA
- 519 WebSocket API
- 33 FX Venues
- 10 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 20 Messenger Bot
- 2 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 59 Open Calais
- 264 Open PermID
- 39 Entity Search
- 2 Org ID
- PAM
- PAM - Logging
- 8.4K Private Comments
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 20 RDMS
- 1.4K Refinitiv Data Platform
- 370 Refinitiv Data Platform Libraries
- 3 Refinitiv Due Diligence
- LSEG Due Diligence Portal API
- 3 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.1K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 10 World-Check Customer Risk Screener
- 990 World-Check One
- 44 World-Check One Zero Footprint
- 45 Side by Side Integration API
- Test Space
- 3 Thomson One Smart
- 1.2K TR Internal
- Global Hackathon 2015
- 2 Specialists Who Code
- 10 TR Knowledge Graph
- 150 Transactions
- 142 REDI API
- 1.7K TREP APIs
- 4 CAT
- 21 DACS Station
- 117 Open DACS
- 1.1K RFA
- 103 UPA
- 172 TREP Infrastructure
- 224 TRKD
- 886 TRTH
- 5 Velocity Analytics
- 5 Wealth Management Web Services
- 60 Workspace SDK
- 9 Element Framework
- 5 Grid
- 13 World-Check Data File
- Yield Book Analytics
- 46 中文论坛